﻿using System;
using System.Collections.Generic;
using EXT;
using System.Data;
using System.Linq;
using System.Windows.Forms;
using DevExpress.Utils;

namespace BanHangCshap.DanhMuc.gkhtdl63.Thuchi
{
    public partial class frmPhieuthu2Chitiet : Form
    {
        bool xgAOrE;
        bool xgLoai;
        DataRow xgDR;

        public frmPhieuthu2Chitiet(bool xlLoai, DataRow xlDR,bool xlAOrE)
        {
            this.xgDR = xlDR;
            this.xgLoai = xlLoai;
            this.xgAOrE = xlAOrE;
            InitializeComponent();
        }

        private Class.gkhtdl63.BLL.Phieuthu2BLL xgPhieuthu2BLL = new BanHangCshap.Class.gkhtdl63.BLL.Phieuthu2BLL();
        private Class.gkhtdl63.DAL.Entities.Phieuthu2 xgP = new BanHangCshap.Class.gkhtdl63.DAL.Entities.Phieuthu2();
        private Class.gkhtdl63.BLL.AllInOneBLL xgAllInOneBLL = new Class.gkhtdl63.BLL.AllInOneBLL();

        private long xgId;
        private void Hienthi()
        {
            xgId = (long)xgDR["Id"].ToFloat();
            txtMa.Text = xgDR["Ma"].ToString();
            dtpNgay.EditValue = xgDR["Ngay"].ToDateTime();
            gletendnLap.EditValue = xgDR["NhanvienLap"].ToString();
            gleId_Khachhang2.EditValue = xgDR["Id_Khachhang2"];
            txtSotien.EditValue = xgDR["Sotien"];
            txtGhichu.EditValue = xgDR["Ghichu"];
        }

        private void Xoa()
        {
            //txtMa.Text = xgDR["Ma"].ToString();
            //dtpNgay.EditValue = DateTime.Now;
            dtpNgay.EditValue = DateTime.Now;
            gletendnLap.EditValue = UserStatic.tendn;
            gleId_Khachhang2.EditValue = null;
            txtSotien.EditValue = 0;
            txtGhichu.EditValue = 0;
            txtNocu.EditValue = 0;
            txtConlai.EditValue = 0;
            gleId_Khachhang2.Focus();
        }

        private void Load_Khachang2()
        {
            Class.gkhtdl63.BLL.Khachhang2BLL xlKhachhang2BLL = new BanHangCshap.Class.gkhtdl63.BLL.Khachhang2BLL();
            DataTable xlDT = xlKhachhang2BLL.Khachhang2_Laydanhsach_View();
            if (xlDT != null)
            {
                DataRow dr = xlDT.NewRow();
                dr[0] = DBNull.Value;
                dr[1] = -1;
                dr[2] = DBNull.Value;
                dr[3] = DBNull.Value;
                dr[4] = DBNull.Value;
                xlDT.Rows.InsertAt(dr, 0);
                gleId_Khachhang2.Properties.DataSource = xlDT;
            }
            else
                DevExpress.XtraEditors.XtraMessageBox.Show("Không kết nối được với CSDL", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        }

        private void LoadNhanvien()
        {
            Class.gkhtdl63.BLL.AllInOneBLL xlAllInOneBLL = new BanHangCshap.Class.gkhtdl63.BLL.AllInOneBLL();
            DataTable xlDT = xlAllInOneBLL.Nhanvien_LayDanhsach();
            if (xlDT != null)
            {
                DataRow xlNewDR = xlDT.NewRow();
                xlNewDR[0] = "";
                xlNewDR[1] = "";
                xlDT.Rows.InsertAt(xlNewDR, 0);

                gletendnLap.Properties.DataSource = xlDT;
            }
            else
                DevExpress.XtraEditors.XtraMessageBox.Show("Không kết nối được với Server\nVui lòng kiểm tra lại kết nối", "THÔNG BÁO", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        }

        private void frmPhieuthu2Chitiet_Load(object sender, EventArgs e)
        {
            Load_Khachang2();
            LoadNhanvien();
            if (xgAOrE)
            {
                Xoa();
            }
            else
                Hienthi();
            gleId_Khachhang2.Focus();
        }

        /// <summary>
        /// Gọi form chọn ngày hay ko
        /// </summary>
        bool xgGoi = true;

        private void dtpNgay_EditValueChanged(object sender, EventArgs e)
        {
            if (xgGoi)
            {
                DateTime xx = DateTime.Now;
                xx = new DateTime(xx.Year, xx.Month, xx.Day, xx.Hour, xx.Minute, 0);
                int x = DateTime.Compare(dtpNgay.EditValue.ToDateTime(), xx);
                if (x == -1)
                {
                    if (gleId_Khachhang2.EditValue != null)
                    {
                        DanhMuc.gkhtdl63.frmDSPhieuKhachhang2 frm = new frmDSPhieuKhachhang2(dtpNgay.EditValue.ToDateTime(), (long)gleId_Khachhang2.EditValue.ToFloat());
                        frm.Layngay += new MyEvent_LoadData(frm_Layngay);
                        frm.ShowDialog();
                    }
                }
            }

            if (xgAOrE)
            {
                if (dtpNgay.EditValue != null)
                {
                    txtMa.Text = xgPhieuthu2BLL.PhieuThu2_TaomaNgay(dtpNgay.EditValue.ToDateTime(), true, "PT");
                }
            }

            if (gleId_Khachhang2.EditValue != null)
            {
                try
                {
                    //txtNocu.EditValue = xgPhieuthu2BLL.Phieuthu2_TinhNocuKhachhang(dtpNgay.EditValue, (long)gleId_Khachhang2.EditValue.ToFloat()).Rows[0]["Nocu"];
                    if (xgLoaiKhach.Equals("K"))
                    {
                        txtNocu.EditValue = xgPhieuthu2BLL.Phieuthu2_TinhNocuKhachhang(dtpNgay.EditValue.ToDateTime(), (long)gleId_Khachhang2.EditValue.ToFloat()).Rows[0]["Nocu"];
                    }
                    else
                    {
                        txtNocu.EditValue = xgPhieuthu2BLL.Phieuthu2_TinhNocuNCC(dtpNgay.EditValue.ToDateTime(), (long)gleId_Khachhang2.EditValue.ToFloat()).Rows[0]["Nocu"];
                    }
                }
                catch (Exception)
                {
                }
            }
        }

        void frm_Layngay(object sender, ELoadData e)
        {
            xgGoi = false;
            dtpNgay.EditValue = e.Data;
            xgGoi = true;
        }

        string xgLoaiKhach = string.Empty;

        private void gleId_Khachhang2_EditValueChanged(object sender, EventArgs e)
        {
            try
            {
                xgLoaiKhach = gleId_Khachhang2.Text.Substring(0, 1);
                //txtNocu.EditValue = xgPhieuthu2BLL.Phieuthu2_TinhNocuKhachhang(dtpNgay.EditValue.ToDateTime(), (long)gleId_Khachhang2.EditValue.ToFloat()).Rows[0]["Nocu"];
                if (xgLoaiKhach.Equals("K"))
                {
                    txtNocu.EditValue = xgPhieuthu2BLL.Phieuthu2_TinhNocuKhachhang(dtpNgay.EditValue.ToDateTime(), (long)gleId_Khachhang2.EditValue.ToFloat()).Rows[0]["Nocu"];
                }
                else
                {
                    txtNocu.EditValue = xgPhieuthu2BLL.Phieuthu2_TinhNocuNCC(dtpNgay.EditValue.ToDateTime(), (long)gleId_Khachhang2.EditValue.ToFloat()).Rows[0]["Nocu"];
                }
            }
            catch (Exception)
            {
            }
        }

        private void txtSotien_EditValueChanging(object sender, DevExpress.XtraEditors.Controls.ChangingEventArgs e)
        {
            try
            {
                if (xgLoaiKhach.Equals("K"))
                {
                    txtConlai.EditValue = txtNocu.EditValue.ToDecimal() - e.NewValue.ToDecimal();
                }
                else
                    txtConlai.EditValue = txtNocu.EditValue.ToDecimal() + e.NewValue.ToDecimal();
            }
            catch (Exception)
            {
            }
        }

        private void btnTaomoi_Click(object sender, EventArgs e)
        {
            xgAOrE = true;
            Xoa();
        }

        private void txtNocu_EditValueChanged(object sender, EventArgs e)
        {
            try
            {
                if (xgAOrE)
                {
                    if (xgLoaiKhach.Equals("K"))
                    {
                        txtConlai.EditValue = txtNocu.EditValue.ToDecimal() - txtSotien.EditValue.ToDecimal();
                    }
                    else
                        txtConlai.EditValue = txtNocu.EditValue.ToDecimal() + txtSotien.EditValue.ToDecimal();
                }
            }
            catch (Exception)
            {
            }
        }

        public event MyEvent_LoadData Tailai = null;

        private void btnLuu_Click(object sender, EventArgs e)
        {
            if (txtMa.Text.Trim().Equals(""))//Chỉ phòng trường hợp hiếm hoi ko kết nối đc với sv nữa
            {
                DevExpress.XtraEditors.XtraMessageBox.Show("Không kết nối được với Server", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                btnTaomoi.Focus();
                return;
            }
            if (gleId_Khachhang2.EditValue==null)
            {
                DevExpress.XtraEditors.XtraMessageBox.Show("Chưa chọn khách hàng", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                gleId_Khachhang2.Focus();
                return;
            }
            if (txtSotien.EditValue.ToDecimal()<=0)
            {
                DevExpress.XtraEditors.XtraMessageBox.Show("Số tiền thu phải lớn hơn 0", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                txtSotien.SelectAll();
                return;
            }

            xgP.Id = xgId;
            xgP.Ma = txtMa.Text;
            xgP.Ngay = dtpNgay.EditValue.ToDateTimeS();
            xgP.NhanvienLap = gletendnLap.EditValue.ToString();
            xgP.Id_Khachhang2 = (long)gleId_Khachhang2.EditValue.ToFloat();
            xgP.Sotien = txtSotien.EditValue.ToFloat();
            xgP.Ghichu = txtGhichu.Text.ToUpperFirst();
            xgP.Loai = true;
            if (xgAOrE)
            {
                //if (!xgPhieuthu2BLL.Phieuthu2_Them(xgP))
                //{
                //    DevExpress.XtraEditors.XtraMessageBox.Show("Không thể lưu\n\nKhông kết nối được với Server", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                //}
                //else
                //{
                //    //Tải lại
                //    if (Tailai != null)
                //    {
                //        Tailai(this, new ELoadData() { IsLoadData = true, Data = "" });
                //    }
                //    Xoa();
                //}

                DataTable xlDT = xgPhieuthu2BLL.Phieuthu2_Them(xgP);
                if (xlDT != null)
                {
                    if (xlDT.Rows.Count > 0)
                    {
                        //Tải lại
                        if (Tailai != null)
                        {
                            Tailai(this, new ELoadData() { IsLoadData = true, Data = "" });
                        }
                        Xoa();
                    }
                    else
                        DevExpress.XtraEditors.XtraMessageBox.Show("Không thể lưu\n\nKhông kết nối được với Server", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                    DevExpress.XtraEditors.XtraMessageBox.Show("Không thể lưu\n\nKhông kết nối được với Server", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }
            else
            {
                if (!xgPhieuthu2BLL.Phieuthu2_Capnhat(xgP))
                {
                    DevExpress.XtraEditors.XtraMessageBox.Show("Không thể lưu\n\nKhông kết nối được với Server", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    //Tải lại
                    if (Tailai != null)
                    {
                        Tailai(this, new ELoadData() { IsLoadData = true, Data = "" });
                    }
                    this.Close();
                }
            }
        }

        private void btnLuuIn_Click(object sender, EventArgs e)
        {
            if (txtMa.Text.Trim().Equals(""))//Chỉ phòng trường hợp hiếm hoi ko kết nối đc với sv nữa
            {
                DevExpress.XtraEditors.XtraMessageBox.Show("Không kết nối được với Server", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                btnTaomoi.Focus();
                return;
            }
            if (gleId_Khachhang2.EditValue == null)
            {
                DevExpress.XtraEditors.XtraMessageBox.Show("Chưa chọn khách hàng", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                gleId_Khachhang2.Focus();
                return;
            }
            if (txtSotien.EditValue.ToDecimal() <= 0)
            {
                DevExpress.XtraEditors.XtraMessageBox.Show("Số tiền thu phải lớn hơn 0", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                txtSotien.SelectAll();
                return;
            }

            xgP.Id = xgId;
            xgP.Ma = txtMa.Text;
            xgP.Ngay = dtpNgay.EditValue.ToDateTimeS();
            xgP.NhanvienLap = gletendnLap.EditValue.ToString();
            xgP.Id_Khachhang2 = (long)gleId_Khachhang2.EditValue.ToFloat();
            xgP.Sotien = txtSotien.EditValue.ToFloat();
            xgP.Ghichu = txtGhichu.Text.ToUpperFirst();
            xgP.Loai = true;
            if (xgAOrE)
            {
                DataTable xlDT =xgPhieuthu2BLL.Phieuthu2_Them(xgP);
                if (xlDT!=null)
                {
                    if (xlDT.Rows.Count>0)
                    {
                        //Tải lại
                        if (Tailai != null)
                        {
                            Tailai(this, new ELoadData() { IsLoadData = true, Data = "" });
                        }

                        DataTable xlDT2 = xgPhieuthu2BLL.Phieuthu2_In((long)xlDT.Rows[0][0].ToFloat());
                        if (xlDT2 != null)
                        {
                            if (xlDT2.Rows.Count > 0)
                            {
                                WaitDialogForm dg = new WaitDialogForm("Đang load dữ liệu...");
                                Report.gkhtdl63.frmMainRPTS frm = new BanHangCshap.Report.gkhtdl63.frmMainRPTS();
                                Report.gkhtdl63.MyRPT.Thuchi.rptThuchi rpt = new BanHangCshap.Report.gkhtdl63.MyRPT.Thuchi.rptThuchi();
                                rpt.DataSource = xlDT2;
                                frm.SetReport(rpt);
                                dg.Close();
                                frm.ShowDialog();
                            }
                        }
                        Xoa();
                    }
                    else
                    DevExpress.XtraEditors.XtraMessageBox.Show("Không thể lưu\n\nKhông kết nối được với Server", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                    DevExpress.XtraEditors.XtraMessageBox.Show("Không thể lưu\n\nKhông kết nối được với Server", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                if (!xgPhieuthu2BLL.Phieuthu2_Capnhat(xgP))
                {
                    DevExpress.XtraEditors.XtraMessageBox.Show("Không thể lưu\n\nKhông kết nối được với Server", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    //Tải lại
                    if (Tailai != null)
                    {
                        Tailai(this, new ELoadData() { IsLoadData = true, Data = "" });
                    }

                    DataTable xlDT2 = xgPhieuthu2BLL.Phieuthu2_In(xgP.Id);
                    if (xlDT2 != null)
                    {
                        if (xlDT2.Rows.Count > 0)
                        {
                            WaitDialogForm dg = new WaitDialogForm("Đang load dữ liệu...");
                            Report.gkhtdl63.frmMainRPTS frm = new BanHangCshap.Report.gkhtdl63.frmMainRPTS();
                            Report.gkhtdl63.MyRPT.Thuchi.rptThuchi rpt = new BanHangCshap.Report.gkhtdl63.MyRPT.Thuchi.rptThuchi();
                            rpt.DataSource = xlDT2;
                            frm.SetReport(rpt);
                            dg.Close();
                            frm.ShowDialog();
                        }
                    }
                    this.Close();
                }
            }
        }

        private void dtpNgay_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
        {
            if (e.Button.Index==1)
            {
                if (gleId_Khachhang2.EditValue != null)
                {
                    DanhMuc.gkhtdl63.frmDSPhieuKhachhang2 frm = new frmDSPhieuKhachhang2(dtpNgay.EditValue.ToDateTime(), (long)gleId_Khachhang2.EditValue.ToFloat());
                    frm.Layngay += new MyEvent_LoadData(frm_Layngay);
                    frm.ShowDialog();
                }
            }
        }
    }
}
